# author：LiuShihao
# data: 2020/11/23 8:30 下午
# desc: Python中的运算符 +（加） -（减） *（乘）   /（除） //(整除)   %（取余）   **（幂运算）
print(1+1) # 执行加法运算
print(1-1) # 减法
print(2*10) # 乘法
print(11/2) #除法
print(11//2)  # 整除运算
print(11%2)  # 取余运算   11 /2 = 5 ... 1
print(2**3)  #2*2*2
# 一正一负的整除以及取余情况
print(9//4)  # 两个正数进行整除   2
print(-9//-4) #两个负数          2
print(9//-4) #一正一负          -3   一正一负向下取整
print(-9//4) #一正一负          -3

print(9%-4)   # -3
print(-9%4)   #  3

a = 10
a+=10    # a = a+10
print(a)
a-=10    # a = a-10
print(a)
a*=10    # a= a*10
print(a)
a/=10    # a= a/10
print(a)
# 支持系列解包赋值
a,b,c = 20,30,40
print(a)
print(b)
print(c)
# 交换两个变量的值
a,b = 10,20
print("交换之前：",a,b)
a,b = b,a
print("交换之后：",a,b)
# 比较运算符  > ,=, <, >=,  <=, == ,!=  比较运算符的结果是布尔类型 True或False
a,b = 10,20
print("a>b吗？",a>b)  # a>b吗？ False
"""
一个=称为赋值运算符   ==称为比较运算符
  一个变量由三个部分组成 ： 标识、类型、值
  == 比较的是标识还是值呢？
  == 比较的是value是否相同，即两者的值是否相同。
  比较对象d的标识使用 is
"""
a = 10
b = 10
print(a==b)   # True 说明a，b的value相等
print(a is b )# True  说明a,b的标识id也相等
lis1 = [11,22,33,44]
lis2 = [11,22,33,44]
print(lis1 == lis2)   # True
print(lis1 is lis2)   # False
print(id(lis1))   # 两个list的id指向不同的地址
print(id(lis2))

print(a is not b)
print(lis1 is not lis2)
# 布尔运算符  and ,or, in,not, not in
# and 当两个运算都为True时，结果才为True
# or  当两个运算有一个为True时，结果才为True
# not  对布尔类型取反   当为True时，结果为False
# in
s = "helloworld"
print('w' in  s) #w 是否在helloworld中存在
# not in
print('w' not in  s)
# 位运算符   左移位 高位溢出,低位补零   右移位  高位补零,低位截断
print(4<<1)  # 左移一位   相等于乘以2
print(4>>1)  # 右移一位   相等于除以2
print(4<<2)
print(4>>2)

# 运算符的优先级  先算乘除后算加减  有幂运算先做幂运算  有括号先算括号内容
# 算术运算>位运算>比较运算>布尔运算>赋值运算
